package com.gx.activemq.ActiveMQ;

import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;

public class Receiver {
    public static void main(String[] args) throws JMSException {
        //123
        //第一步：建立ConnectionFactory工厂对象，需要填入用户名、密码、以及要连接的地址，均使用默认即可。默认端口为"tcp://localhost:61616"
        ConnectionFactory connectionfactory=new ActiveMQConnectionFactory(
                ActiveMQConnectionFactory.DEFAULT_USER,
                ActiveMQConnectionFactory.DEFAULT_PASSWORD,
                "tcp://localhost:61616"
        );
        //第二步：通过ConnectionFactory工厂对象，我们创建一个Connection连接，并且调用Connection的start方法开启连接，Connection默认是关闭的
        Connection connection = connectionfactory.createConnection();
        connection.start();
        //第三步：通过Connection对象创建Session会话（上下文环境对象），用于接收消息，参数配置1为是否启用事务，参数配置2为签收模式，一般设置为自动签收
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //第四步：通过Session创建Destination对象，指的是一个客户端用来指定生产消息目标和消费消息来源的对象，在PTP模式中，Destination被称为Queue即队列；在Pub/Sub模式中，Destination被称作Topic即主题，在程序中可以使用多个Queue和Topic
        Destination destinition=session.createQueue("queue1");
        //第五步：我们需要通过Session对象创建消息的发送和接收对象（生产者和消费者）MessageProducer/MessageConsumer
        MessageConsumer messageConsumer = session.createConsumer(destinition);
        //第六步：最后我们使用JMS规范的TextMessage形式接收数据
        while (true) {
            TextMessage msg=(TextMessage) messageConsumer.receive();
            System.out.println(msg.getText());
            if(msg==null) break;
        }

        if(connection!=null){
            connection.close();
        }
    }
}